package com.itheima.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class StarAgentProxy {
    // 设计一个方法，返回明星对象的代理对象
    public  static Skill getProxy(Star obj){
        //public static Object newProxyInstance​(ClassLoader loader,
        //                                      Class<?>[] interfaces,
        //                                      InvocationHandler h)
        //三个参数 类加载器  obj.getClass().getClassloader(); 固定这么写
        // obj.getClass().getInterfaces(); 固定这么写
        // new InvocationHander();
        return (Skill) Proxy.newProxyInstance(obj.getClass().getClassLoader(),
                obj.getClass().getInterfaces(),
                new InvocationHandler() {
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                        System.out.println("1.首付款");
                        // method代表方法
                        Object o = method.invoke(obj);
                        System.out.println("2.尾款");
                        return o;
                    }
                });
    }
}
